package com.itheima.d11_generics_method;

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        // 目标: 掌握泛型方法的定义和使用
        test("String");
        Dog d = test(new Dog());


        // 需求: 所有的汽车可以一起参加比赛;
        ArrayList<Car> cars = new ArrayList<>();
        cars.add(new BMW());
        cars.add(new BENZ());
        go(cars);

        ArrayList<BMW> bmws = new ArrayList<>();
        bmws.add(new BMW());
        bmws.add(new BMW());
        go(bmws);


        ArrayList<BENZ> benzs = new ArrayList<>();
        benzs.add(new BENZ());
        benzs.add(new BENZ());
        go(benzs);


//        ArrayList<Dog> dogs = new ArrayList<>();
//        dogs.add(new Dog());
//        dogs.add(new Dog());
//        go(dogs);


    }


    // ? 是通配符, 在使用泛型的时候可以代表一切类型
    // ? extends Car(上限)  只能是Car或者Car的子类
    // ? super Car(下限)    只能Car和Car的父类
    public static void go(ArrayList<? extends Car> cars) {

    }

//    public static <T extends Car> void go(ArrayList<T> cars) {
//
//    }

    public static <T> T test(T t) {
        return t;
    }
}

